//vuex的储存空间
//1.下载
//2.引入
import Vuex from 'vuex'
import Vue from 'vue'

//往Vue导入Vuex
Vue.use(Vuex)//使用vue插件

//3.使用-创建vuex的数据仓库---暴露
//暴露给全局使用(main.ts)
export default new Vuex.Store({ 
    //vuex的金典属性--交互数据(经常页面之间使用的数据)
    state:{
        name:"张三",
        infolist:[]//详细数据数组,所有的商品信息
    },
    //mutations--改变属性数据
    mutations:{
        changeName1(state){
            state.name="李四"
        },
        changeName2(state,val){
            state.name=val
        },
        changeName3(state,val){
            state.name=val
        },
        //清空购物车
        clear(state){
            for(let obj of state.infolist){
                for(let child of obj.foods){
                    child.num=0
                    //往每个商品里面定义一个购买的商品数量,初始值为0
                }
            }
        },
        //初始化详情数组
        initInfolist(state,newarr){
            // [
            // { [ {属性:值, ratings[ {属性:值} ] },{} ], 属性:值},
            // { [ {属性:值, ratings[ {属性:值} ] },{} ], 属性:值},
            // ]
            // console.log(newarr);
            for(let obj of newarr){
                for(let child of obj.foods){
                    child.num=0
                    //往每个商品里面定义一个购买的商品数量,初始值为0
                }
            }
            state.infolist = newarr
            console.log( state.infolist);//得到了购买商品数量初始为0       
        },
        //改变购买商品的数量
        addNum(state,itemobject){ 
            for(let obj of state.infolist){
                for(let child of obj.foods){
                   if(child.id==itemobject.id){//找到点击的商品 商品id等于点击的商品id
                    child.num+=itemobject.num//自定义的商品数量属性自增
                   }
                }
            }       
        }

    },


    //vuex的计算属性---getters
    //依赖的数据变化才会重复运算,性能超级高
    //getters  属于  cuex  运算state的值
    //computed 属于  xue   运算vue的值
    getters:{
        shopcarlist(state){
            //过滤商品大于0的商品,组成数组
            let arr:Array<any>=[];
            let list :Array<any>=state.infolist;
            for(let obj of list){
                for(let child of obj.foods){
                   if(child.num>0){//找到增加的商品 
                    arr.push(child)//自定义的商品数量属性自增
                   }
                }
            }      
           
             
            return arr
        }
    }
})